package com.ffcs.crmd.tsp.api.dto.task;

import java.io.Serializable;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import com.ffcs.crmd.tsp.api.dto.enu.JobType;
import com.thoughtworks.xstream.annotations.XStreamAliasType;

/**
 * 
 * 功能说明:子任务
 *
 * @author ZHONGFUHUA
 * 
 * @since 1.0.0-SNAPSHOT
 *
 */
@XStreamAliasType("TspJobInstance")
public class TspJobInstance implements Serializable {
    
    /**
     * 
     */
    private static final long serialVersionUID = 4126211429896397479L;
    
    /**
     * 子任务名
     */
    private String            name;
    
    /**
     * 任务名->对应quartz的任务组
     */
    private String            jobName;
    
    /**
     * 任务类路径
     */
    private String            jobClass;
    
    /**
     * 标识
     */
    private String            jobKey;
    
    /**
     * 优先级别
     */
    private int               priority         = 1;
    
    /**
     * 任务描述
     */
    private String            description;
    
    /**
     * 开始执行时间
     */
    private Date              startTime;
    
    /**
     * 结束时间
     */
    private Date              endTime;
    
    /**
     * 任务类型
     */
    private JobType           jobType          = JobType.NORMAL;
    
    /**
     * 功能说明: 获取标识
     *
     * @return jobKey 标识
     */
    public String getJobKey() {
        if (StringUtils.isBlank(jobKey)) {
            return jobName + "." + this.getName();
        }
        return jobKey;
    }
    
    /**
     * 功能说明: 获取任务名->对应quartz的任务组
     *
     * @return jobName 任务名->对应quartz的任务组
     */
    public String getJobName() {
        return jobName;
    }
    
    /**
     * 功能说明: 获取优先级别
     *
     * @return priority 优先级别
     */
    public int getPriority() {
        return priority;
    }
    
    /**
     * 功能说明: 设置优先级别
     *
     * @param priority 优先级别
     */
    public void setPriority(int priority) {
        this.priority = priority;
    }
    
    /**
     * 功能说明: 设置标识
     *
     * @param jobKey 标识
     */
    public void setJobKey(String jobKey) {
        this.jobKey = jobKey;
    }
    
    /**
     * 功能说明: 获取子任务名
     *
     * @return name 子任务名
     */
    public String getName() {
        return name;
    }
    
    /**
     * 功能说明: 设置子任务名
     *
     * @param name 子任务名
     */
    public void setName(String name) {
        this.name = name;
    }
    
    /**
     * 功能说明: 设置任务名->对应quartz的任务组
     *
     * @param jobName 任务名->对应quartz的任务组
     */
    public void setJobName(String jobName) {
        this.jobName = jobName;
    }
    
    
    /**
     * 功能说明: 获取任务描述
     *
     * @return description 任务描述
     */
    public String getDescription() {
        return description;
    }
    
    /**
     * 功能说明: 设置任务描述
     *
     * @param description 任务描述
     */
    public void setDescription(String description) {
        this.description = description;
    }
    
    /**
     * 功能说明: 获取任务类路径
     *
     * @return jobClass 任务类路径
     */
    public String getJobClass() {
        return jobClass;
    }
    
    /**
     * 功能说明: 设置任务类路径
     *
     * @param jobClass 任务类路径
     */
    public void setJobClass(String jobClass) {
        this.jobClass = jobClass;
    }
    
    /**
     * 功能说明: 获取开始执行时间
     *
     * @return startTime 开始执行时间
     */
    public Date getStartTime() {
        return startTime;
    }
    
    /**
     * 功能说明: 设置开始执行时间
     *
     * @param startTime 开始执行时间
     */
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    
    /**
     * 功能说明: 获取结束时间
     *
     * @return endTime 结束时间
     */
    public Date getEndTime() {
        return endTime;
    }
    
    /**
     * 功能说明: 设置结束时间
     *
     * @param endTime 结束时间
     */
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    
    
    /**
     * 功能说明: 获取任务类型
     *
     * @return jobType 任务类型
     */
    public JobType getJobType() {
        return jobType;
    }
    
    /**
     * 功能说明: 设置任务类型
     *
     * @param jobType 任务类型
     */
    public void setJobType(JobType jobType) {
        this.jobType = jobType;
    }
    
    /**
     * 功能说明:
     * 
     * @return
     */
    @Override
    public String toString() {
        return "TspJobDetail [name=" + name + ", jobName=" + jobName + ", jobClass=" + jobClass + ", jobKey=" + jobKey + ", priority=" + priority
            + ", description=" + description + ", startTime=" + startTime + ", endTime=" + endTime + ", jobType=" + jobType + "]";
    }
    
}
